<!DOCTYPE HTML>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>

<div id="wrapper1">
    <button id="button1">Button</button>
</div>

<script>
async_test(function(t)
{
    var axButton = accessibilityController.accessibleElementById("button1");
    axButton.addNotificationListener(t.step_func(function(notification) {
        t.done();
        if (notification == 'Clicked') {
            t.done();
        }
    }));

    var button = document.getElementById("button1");
    button.click();
}, "clicking a button via javascript sends an accessible click event");
</script>

<div id="wrapper2">
    <button id="button2">Button</button>
</div>

<script>
async_test(function(t)
{
    var axButton = accessibilityController.accessibleElementById("button2");
    axButton.addNotificationListener(t.step_func(function(notification) {
        if (notification == 'Clicked') {
            t.done();
        }
    }));

    eventSender.mouseMoveTo(axButton.x + 10, axButton.y + 10);
    eventSender.mouseDown();
    eventSender.mouseUp();
}, "clicking a button via mouse events sends an accessible click event");
</script>

<div id="wrapper3">
    <button id="button3">Button</button>
</div>

<script>
async_test(function(t)
{
    var axButton = accessibilityController.accessibleElementById("button3");
    axButton.addNotificationListener(t.step_func(function(notification) {
        if (notification == 'Clicked') {
            t.done();
        }
    }));

    var button = document.getElementById("button3");
    button.focus();
    eventSender.keyDown("\r");
}, "clicking a button via the keyboard sends an accessible click event");
</script>

<div id="wrapper4">
    <button id="button4">Button</button>
</div>

<script>
async_test(function(t)
{
    var axButton = accessibilityController.accessibleElementById("button4");
    axButton.addNotificationListener(t.step_func(function(notification) {
        if (notification == 'Clicked') {
            t.done();
        }
    }));

    axButton.press();
}, "clicking a button via accessibility sends an accessible click event");
</script>

<div id="wrapper5">
    <button id="button5">Button</button>
</div>

<script>
async_test(function(t)
{
    var axButton = accessibilityController.accessibleElementById("button5");
    axButton.addNotificationListener(t.step_func(function(notification) {
        if (notification == 'Clicked') {
            assert_unreached("There shouldn't be a Clicked notification.");
        }
    }));

    let x = axButton.x;
    let y = axButton.y;
    eventSender.dragMode = true;
    eventSender.mouseMoveTo(x + 10, y + 10);
    eventSender.mouseDown();
    eventSender.leapForward(100);
    eventSender.mouseMoveTo(x + 10, y + 100);
    eventSender.mouseUp();

    // Make the test pass after a short delay. The test passes if the
    // accessible click event does not fire.
    window.setTimeout(t.step_func(function() {
        t.done();
    }, 200));
}, "dragging the mouse off a button does not send an accessible click event");
</script>
<div id="wrapper6">
    <button id="button6">Button</button>
</div>

<script>
async_test(function(t)
{
    var axButton = accessibilityController.accessibleElementById("button6");
    axButton.addNotificationListener(t.step_func(function(notification) {
        if (notification == 'Clicked') {
            assert_unreached("There shouldn't be a Clicked notification.");
        }
    }));

    let x = axButton.x;
    let y = axButton.y;
    eventSender.dragMode = true;
    eventSender.mouseMoveTo(x + 10, y + 100);
    eventSender.mouseDown();
    eventSender.leapForward(100);
    eventSender.mouseMoveTo(x + 10, y + 10);
    eventSender.mouseUp();

    // Make the test pass after a short delay. The test passes if the
    // accessible click event does not fire.
    window.setTimeout(t.step_func(function() {
        t.done();
    }, 0));
}, "dragging the mouse onto a button does not send an accessible click event");
</script>

<div id="wrapper7">
    <button id="button7">Button</button>
</div>

<script>
async_test(function(t)
{
    var axButton = accessibilityController.accessibleElementById("button7");
    axButton.addNotificationListener(t.step_func(function(notification) {
        if (notification == 'Clicked') {
            t.done();
        }
    }));

    let x = axButton.x;
    let y = axButton.y;
    eventSender.gestureTap(x + 10, y + 10);
}, "tapping on a button with a touch event sends an accessible click event");
</script>
